import java.util.Scanner;
/**
 * Demoutwo 类用于将用户输入的金额转换为中文大写金额表示。
 */
public class Demoutwo {
    /**
     * 程序的入口点，处理用户输入的金额并将其转换为中文大写金额。
     *
     * @param args 命令行参数，在本程序中未使用。
     */
    public static void main(String[] args) {
        // 1. 键盘录入一个金额
        // 创建一个 Scanner 对象，用于从标准输入读取用户输入
        Scanner sc = new Scanner(System.in);
        // 定义变量 money 用于存储用户输入的金额
        int money;
        // 使用 while 循环确保用户输入的金额在有效范围内（0 到 9999999 之间）
        while (true) {
            // 提示用户输入一个金额
            System.out.println("请输入一个金额：");
            // 从标准输入读取一个整数作为金额
            money = sc.nextInt();
            // 检查金额是否在有效范围内
            if (money >= 0 && money <= 9999999) {
                // 如果金额有效，跳出循环
                break;
            } else {
                // 如果金额无效，提示用户并继续循环等待新的输入
                System.out.println("金额无效");
            }
        }

        // 2. 把金额转换为中文
        // 定义一个空字符串 str 用于存储转换后的中文金额
        String str = "";
        // 使用 while 循环将金额逐位转换为中文数字
        while (true) {
            // 获取当前金额的个位数字
            int ge = money % 10;
            // 调用 getChinaNum 方法将个位数字转换为中文数字
            String chinaNum = getChinaNum(ge);
            // 将中文数字拼接到 str 字符串的前面
            str = chinaNum + str;
            // 去掉刚刚处理的个位数字
            money = money / 10;
            // 检查金额是否已经处理完
            if (money == 0) {
                // 如果金额为 0，跳出循环
                break;
            }
        }

        // 3. 补零，补到 7 位
        // 计算需要补充的零的数量
        int count = 7 - str.length();
        // 使用 for 循环在 str 字符串前面补充零
        for (int i = 0; i < count; i++) {
            str = "零" + str;
        }
        // 输出补零后的中文数字字符串
        System.out.println(str);

        // 4. 插入单位
        // 定义一个字符串数组 arr2，包含中文金额的单位
        String[] arr2 = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
        // 使用 for 循环遍历补零后的中文数字字符串
        for (int i = 0; i < str.length(); i++) {
            // 获取当前位置的中文数字字符
            char c = str.charAt(i);
            // 将中文数字字符和对应的单位拼接成一个新的字符串
            String s = c + arr2[i];
            // 输出拼接后的字符串
            System.out.print(s);
        }
    }

    /**
     * 将阿拉伯数字转换为中文大写数字。
     *
     * @param number 要转换的阿拉伯数字（0 到 9 之间）
     * @return 对应的中文大写数字字符串
     */
    public static String getChinaNum(int number) {
        // 定义一个字符串数组 arr，包含中文大写数字
        String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        // 返回数组中对应索引的中文大写数字
        return arr[number];
    }
}
